/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package pvt.delez.pam.virgin;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

/**
 * <!-- begin-user-doc -->
 * The <b>Package</b> for the model.
 * It contains accessors for the meta objects to represent
 * <ul>
 *   <li>each class,</li>
 *   <li>each feature of each class,</li>
 *   <li>each enum,</li>
 *   <li>and each data type</li>
 * </ul>
 * <!-- end-user-doc -->
 * @see pvt.delez.pam.virgin.VirginFactory
 * @model kind="package"
 * @generated
 */
public interface VirginPackage extends EPackage {
	/**
	 * The package name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	String eNAME = "virgin";

	/**
	 * The package namespace URI.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	String eNS_URI = "http://delez.info/pam/virgin";

	/**
	 * The package namespace name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	String eNS_PREFIX = "virgin";

	/**
	 * The singleton instance of the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	VirginPackage eINSTANCE = pvt.delez.pam.virgin.impl.VirginPackageImpl.init();

	/**
	 * The meta object id for the '{@link pvt.delez.pam.virgin.impl.ProjectDescriptorImpl <em>Project Descriptor</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see pvt.delez.pam.virgin.impl.ProjectDescriptorImpl
	 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getProjectDescriptor()
	 * @generated
	 */
	int PROJECT_DESCRIPTOR = 0;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int PROJECT_DESCRIPTOR__NAME = 0;

	/**
	 * The feature id for the '<em><b>Projects</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int PROJECT_DESCRIPTOR__PROJECTS = 1;

	/**
	 * The feature id for the '<em><b>Build Commands</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int PROJECT_DESCRIPTOR__BUILD_COMMANDS = 2;

	/**
	 * The feature id for the '<em><b>Natures</b></em>' attribute list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int PROJECT_DESCRIPTOR__NATURES = 3;

	/**
	 * The number of structural features of the '<em>Project Descriptor</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int PROJECT_DESCRIPTOR_FEATURE_COUNT = 4;

	/**
	 * The meta object id for the '{@link pvt.delez.pam.virgin.impl.ClassPathDescriptorImpl <em>Class Path Descriptor</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see pvt.delez.pam.virgin.impl.ClassPathDescriptorImpl
	 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathDescriptor()
	 * @generated
	 */
	int CLASS_PATH_DESCRIPTOR = 1;

	/**
	 * The feature id for the '<em><b>Class Paths</b></em>' reference list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_DESCRIPTOR__CLASS_PATHS = 0;

	/**
	 * The number of structural features of the '<em>Class Path Descriptor</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_DESCRIPTOR_FEATURE_COUNT = 1;

	/**
	 * The meta object id for the '{@link pvt.delez.pam.virgin.impl.BuildCommandImpl <em>Build Command</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see pvt.delez.pam.virgin.impl.BuildCommandImpl
	 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getBuildCommand()
	 * @generated
	 */
	int BUILD_COMMAND = 2;

	/**
	 * The feature id for the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int BUILD_COMMAND__NAME = 0;

	/**
	 * The feature id for the '<em><b>Arguments</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int BUILD_COMMAND__ARGUMENTS = 1;

	/**
	 * The number of structural features of the '<em>Build Command</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int BUILD_COMMAND_FEATURE_COUNT = 2;

	/**
	 * The meta object id for the '{@link pvt.delez.pam.virgin.impl.ClassPathEntryImpl <em>Class Path Entry</em>}' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see pvt.delez.pam.virgin.impl.ClassPathEntryImpl
	 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathEntry()
	 * @generated
	 */
	int CLASS_PATH_ENTRY = 3;

	/**
	 * The feature id for the '<em><b>Kind</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_ENTRY__KIND = 0;

	/**
	 * The feature id for the '<em><b>Path</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_ENTRY__PATH = 1;

	/**
	 * The feature id for the '<em><b>Combine Access Rules</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_ENTRY__COMBINE_ACCESS_RULES = 2;

	/**
	 * The number of structural features of the '<em>Class Path Entry</em>' class.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	int CLASS_PATH_ENTRY_FEATURE_COUNT = 3;

	/**
	 * The meta object id for the '{@link pvt.delez.pam.virgin.ClassPathEntryKind <em>Class Path Entry Kind</em>}' enum.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see pvt.delez.pam.virgin.ClassPathEntryKind
	 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathEntryKind()
	 * @generated
	 */
	int CLASS_PATH_ENTRY_KIND = 4;


	/**
	 * Returns the meta object for class '{@link pvt.delez.pam.virgin.ProjectDescriptor <em>Project Descriptor</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Project Descriptor</em>'.
	 * @see pvt.delez.pam.virgin.ProjectDescriptor
	 * @generated
	 */
	EClass getProjectDescriptor();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.ProjectDescriptor#getName <em>Name</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Name</em>'.
	 * @see pvt.delez.pam.virgin.ProjectDescriptor#getName()
	 * @see #getProjectDescriptor()
	 * @generated
	 */
	EAttribute getProjectDescriptor_Name();

	/**
	 * Returns the meta object for the reference list '{@link pvt.delez.pam.virgin.ProjectDescriptor#getProjects <em>Projects</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Projects</em>'.
	 * @see pvt.delez.pam.virgin.ProjectDescriptor#getProjects()
	 * @see #getProjectDescriptor()
	 * @generated
	 */
	EReference getProjectDescriptor_Projects();

	/**
	 * Returns the meta object for the reference list '{@link pvt.delez.pam.virgin.ProjectDescriptor#getBuildCommands <em>Build Commands</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Build Commands</em>'.
	 * @see pvt.delez.pam.virgin.ProjectDescriptor#getBuildCommands()
	 * @see #getProjectDescriptor()
	 * @generated
	 */
	EReference getProjectDescriptor_BuildCommands();

	/**
	 * Returns the meta object for the attribute list '{@link pvt.delez.pam.virgin.ProjectDescriptor#getNatures <em>Natures</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute list '<em>Natures</em>'.
	 * @see pvt.delez.pam.virgin.ProjectDescriptor#getNatures()
	 * @see #getProjectDescriptor()
	 * @generated
	 */
	EAttribute getProjectDescriptor_Natures();

	/**
	 * Returns the meta object for class '{@link pvt.delez.pam.virgin.ClassPathDescriptor <em>Class Path Descriptor</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Class Path Descriptor</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathDescriptor
	 * @generated
	 */
	EClass getClassPathDescriptor();

	/**
	 * Returns the meta object for the reference list '{@link pvt.delez.pam.virgin.ClassPathDescriptor#getClassPaths <em>Class Paths</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the reference list '<em>Class Paths</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathDescriptor#getClassPaths()
	 * @see #getClassPathDescriptor()
	 * @generated
	 */
	EReference getClassPathDescriptor_ClassPaths();

	/**
	 * Returns the meta object for class '{@link pvt.delez.pam.virgin.BuildCommand <em>Build Command</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Build Command</em>'.
	 * @see pvt.delez.pam.virgin.BuildCommand
	 * @generated
	 */
	EClass getBuildCommand();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.BuildCommand#getName <em>Name</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Name</em>'.
	 * @see pvt.delez.pam.virgin.BuildCommand#getName()
	 * @see #getBuildCommand()
	 * @generated
	 */
	EAttribute getBuildCommand_Name();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.BuildCommand#getArguments <em>Arguments</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Arguments</em>'.
	 * @see pvt.delez.pam.virgin.BuildCommand#getArguments()
	 * @see #getBuildCommand()
	 * @generated
	 */
	EAttribute getBuildCommand_Arguments();

	/**
	 * Returns the meta object for class '{@link pvt.delez.pam.virgin.ClassPathEntry <em>Class Path Entry</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for class '<em>Class Path Entry</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathEntry
	 * @generated
	 */
	EClass getClassPathEntry();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.ClassPathEntry#getKind <em>Kind</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Kind</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathEntry#getKind()
	 * @see #getClassPathEntry()
	 * @generated
	 */
	EAttribute getClassPathEntry_Kind();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.ClassPathEntry#getPath <em>Path</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Path</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathEntry#getPath()
	 * @see #getClassPathEntry()
	 * @generated
	 */
	EAttribute getClassPathEntry_Path();

	/**
	 * Returns the meta object for the attribute '{@link pvt.delez.pam.virgin.ClassPathEntry#isCombineAccessRules <em>Combine Access Rules</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for the attribute '<em>Combine Access Rules</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathEntry#isCombineAccessRules()
	 * @see #getClassPathEntry()
	 * @generated
	 */
	EAttribute getClassPathEntry_CombineAccessRules();

	/**
	 * Returns the meta object for enum '{@link pvt.delez.pam.virgin.ClassPathEntryKind <em>Class Path Entry Kind</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the meta object for enum '<em>Class Path Entry Kind</em>'.
	 * @see pvt.delez.pam.virgin.ClassPathEntryKind
	 * @generated
	 */
	EEnum getClassPathEntryKind();

	/**
	 * Returns the factory that creates the instances of the model.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the factory that creates the instances of the model.
	 * @generated
	 */
	VirginFactory getVirginFactory();

	/**
	 * <!-- begin-user-doc -->
	 * Defines literals for the meta objects that represent
	 * <ul>
	 *   <li>each class,</li>
	 *   <li>each feature of each class,</li>
	 *   <li>each enum,</li>
	 *   <li>and each data type</li>
	 * </ul>
	 * <!-- end-user-doc -->
	 * @generated
	 */
	interface Literals {
		/**
		 * The meta object literal for the '{@link pvt.delez.pam.virgin.impl.ProjectDescriptorImpl <em>Project Descriptor</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see pvt.delez.pam.virgin.impl.ProjectDescriptorImpl
		 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getProjectDescriptor()
		 * @generated
		 */
		EClass PROJECT_DESCRIPTOR = eINSTANCE.getProjectDescriptor();

		/**
		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute PROJECT_DESCRIPTOR__NAME = eINSTANCE.getProjectDescriptor_Name();

		/**
		 * The meta object literal for the '<em><b>Projects</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EReference PROJECT_DESCRIPTOR__PROJECTS = eINSTANCE.getProjectDescriptor_Projects();

		/**
		 * The meta object literal for the '<em><b>Build Commands</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EReference PROJECT_DESCRIPTOR__BUILD_COMMANDS = eINSTANCE.getProjectDescriptor_BuildCommands();

		/**
		 * The meta object literal for the '<em><b>Natures</b></em>' attribute list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute PROJECT_DESCRIPTOR__NATURES = eINSTANCE.getProjectDescriptor_Natures();

		/**
		 * The meta object literal for the '{@link pvt.delez.pam.virgin.impl.ClassPathDescriptorImpl <em>Class Path Descriptor</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see pvt.delez.pam.virgin.impl.ClassPathDescriptorImpl
		 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathDescriptor()
		 * @generated
		 */
		EClass CLASS_PATH_DESCRIPTOR = eINSTANCE.getClassPathDescriptor();

		/**
		 * The meta object literal for the '<em><b>Class Paths</b></em>' reference list feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EReference CLASS_PATH_DESCRIPTOR__CLASS_PATHS = eINSTANCE.getClassPathDescriptor_ClassPaths();

		/**
		 * The meta object literal for the '{@link pvt.delez.pam.virgin.impl.BuildCommandImpl <em>Build Command</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see pvt.delez.pam.virgin.impl.BuildCommandImpl
		 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getBuildCommand()
		 * @generated
		 */
		EClass BUILD_COMMAND = eINSTANCE.getBuildCommand();

		/**
		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute BUILD_COMMAND__NAME = eINSTANCE.getBuildCommand_Name();

		/**
		 * The meta object literal for the '<em><b>Arguments</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute BUILD_COMMAND__ARGUMENTS = eINSTANCE.getBuildCommand_Arguments();

		/**
		 * The meta object literal for the '{@link pvt.delez.pam.virgin.impl.ClassPathEntryImpl <em>Class Path Entry</em>}' class.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see pvt.delez.pam.virgin.impl.ClassPathEntryImpl
		 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathEntry()
		 * @generated
		 */
		EClass CLASS_PATH_ENTRY = eINSTANCE.getClassPathEntry();

		/**
		 * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute CLASS_PATH_ENTRY__KIND = eINSTANCE.getClassPathEntry_Kind();

		/**
		 * The meta object literal for the '<em><b>Path</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute CLASS_PATH_ENTRY__PATH = eINSTANCE.getClassPathEntry_Path();

		/**
		 * The meta object literal for the '<em><b>Combine Access Rules</b></em>' attribute feature.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @generated
		 */
		EAttribute CLASS_PATH_ENTRY__COMBINE_ACCESS_RULES = eINSTANCE.getClassPathEntry_CombineAccessRules();

		/**
		 * The meta object literal for the '{@link pvt.delez.pam.virgin.ClassPathEntryKind <em>Class Path Entry Kind</em>}' enum.
		 * <!-- begin-user-doc -->
		 * <!-- end-user-doc -->
		 * @see pvt.delez.pam.virgin.ClassPathEntryKind
		 * @see pvt.delez.pam.virgin.impl.VirginPackageImpl#getClassPathEntryKind()
		 * @generated
		 */
		EEnum CLASS_PATH_ENTRY_KIND = eINSTANCE.getClassPathEntryKind();

	}

} //VirginPackage
